package com.upao.util;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.Transaction;
import com.upao.ocw.User;
import java.util.Date;

public class DBUser {
    public static void save(String nombres, String ape_paterno, String ape_materno, String correo, Date fecha_nacimiento,String password) {
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Transaction txn = datastore.beginTransaction();
        try {
            Entity user = new Entity("User");
            user.setProperty("nombres", nombres);
            user.setProperty("ape_paterno", ape_paterno);
            user.setProperty("ape_materno", ape_materno);
            user.setProperty("correo", correo);
            user.setProperty("fecha_nacimiento", fecha_nacimiento);
            
            user.setProperty("password", password);
            datastore.put(user);
            txn.commit();
        } finally {
            if (txn.isActive()) {
                txn.rollback();
            }
        }
    }
    private Boolean validar(String usuario, String password){
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Boolean estado = false;
        String falta;
        Entity user = getEntityUserByUsuario(usuario);

        if(!usuario.isEmpty()){
            if(!password.isEmpty()){
                if(user.getProperty("usuario")==usuario && user.getProperty("password")==password){
                    estado = true;
                }
            }else{ falta = "No se ingresó la Contraseña";}
        }else{ falta = "No se ingresó el Nombre de Usuario"; }
        return estado;
    }
    
    public static Entity getEntityUserByUsuario(String usuario) {
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
        Query q = new Query("User");
        q.addFilter("usuario", Query.FilterOperator.EQUAL, usuario); 
        PreparedQuery pq = ds.prepare(q);
        return pq.asQueryResultIterator().next();
    }
    
    public static Entity getEntityUserByEmail(String correo) {
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
        Query q = new Query("User");
        q.addFilter("correo", Query.FilterOperator.EQUAL, correo); 
        PreparedQuery pq = ds.prepare(q);
        return pq.asQueryResultIterator().next();
    }
    
    public static Entity getEntityUserByNombres(String nombre) {
        DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
        Query q = new Query("User");
        q.addFilter("nombres", Query.FilterOperator.EQUAL, nombre); 
        PreparedQuery pq = ds.prepare(q);
        return pq.asQueryResultIterator().next();
    }
    
    
    
}
